[Talend]tS3Connectionを利用してクライアントサイド暗号化をする
はじめに
こんにちは。DI部の大高です。
今回はTalendのコンポーネント「tS3Connection」を利用したクライアントサイド暗号化をご紹介します。なお接続にはアクセスキー、シークレットキーを利用した基本的な接続を行っております。詳細についてはこちらの記事をご参照ください。
[Talend]tS3Connectionを利用してS3へ基本的な接続をする | DevelopersIO
前提条件
Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。
tS3Connectionについて
「tS3Connection」を利用すると「tS3XXXXX」というS3用の各コンポーネントにおけるコネクションを共通設定することができます。
「tS3Connection」コンポーネントのTalend Helpページはこちらです。
では、具体的に以下で解説していきます。
ジョブの説明
「tS3Connection」で接続を行い、「tS3Put」でオブジェクトをPutしたら「tS3Close」で接続をクローズしています。
「カスタマー管理 CMK」の作成
今回はクライアントサイド暗号化をしたいので、まずはAWSの管理コンソールで「Key Management Service (KMS)」を開き、「カスタマー管理 CMK」を作成します。
「カスタマー管理型のキー」を選択し、「キーの作成」をクリックします。
任意の「エイリアス」の名前を指定して「Next」をクリックします。
必要に応じてタグを追加し、「Next」をクリックします。
キー管理者として、「IAMユーザー」または「IAMロール」を指定して「Next」をクリックします。
データ暗号化および復号する「IAMユーザー」または「IAMロール」を指定して「Next」をクリックします。ここでは、今回「tS3Connection」で利用する「IAMユーザー」を指定しておきます。
ポリシーを確認して「完了」をクリックします。
無事に作成できたら「リージョン」と「キーID」を控えておきます。(後で「tS3Connection」に設定します。)
「tS3Connection」コンポーネントの設定
「tS3Connection」コンポーネントでは、以下のように接続設定をしました。
アクセスキー、シークレットキー
AWSのマネージメントコンソールなどで作成した、IAMユーザのアクセスキー、シークレットキーを指定します。
リージョン
ここにはアクセスするS3バケットのリージョンを指定しておきます。クライアントサイド暗号化を行わない場合には、以下のようにJavaのコード上でwithForceGlobalBucketAccessEnabledが有効になるので問題にはならないのですが、クライアントサイド暗号化を行う際にはwithForceGlobalBucketAccessEnabledは有効とならないので明示的に指定する必要があります。
com.amazonaws.services.s3.AmazonS3 conn_tS3Connection_1 = com.amazonaws.services.s3.AmazonS3ClientBuilder .standard() .withRegion("us-east-1") // The first region to try your request against .withForceGlobalBucketAccessEnabled(true) // If a bucket is in a different region, try again in // the correct region
暗号化
「暗号化」を行う際に指定するオプションです。今回はクライアントサイド暗号化を行いたいので有効にします。
キータイプ
暗号化のキータイプとしてKMS管理顧客マスターキー
、対称マスターキー
、非対称マスターキー
が選択できます。
それぞれ選択するとKMS管理顧客マスターキー
では「カスタマー管理 CMKのキーID」、対称マスターキー
では「公開鍵」、非対称マスターキー
では「公開鍵」と「秘密鍵」を指定することになります。
今回はKMS管理顧客マスターキー
を選択します。
キー
「カスタマー管理 CMK」を作成した際の「キーID」(e3b30XXXXXXXXXXXXXXXXXXXXX)をここで指定します。
「tS3Put」コンポーネントの設定
「tS3Put」コンポーネントでは、以下のように接続設定をしました。今回はこちらのコンポーネントについて細かく記載しませんが、主な設定として「接続」には「既存の接続を使用」として、先程作成した「tS3Connection」を指定しています。
「tS3Close」コンポーネントの設定
「tS3Close」コンポーネントでは、以下のように接続設定をしました。こちらも「接続」には「既存の接続を使用」として、先程作成した「tS3Connection」を指定しています。
実行結果
今回の設定は以上です。実際にこのジョブを実行すると「tS3Put」で指定したバケット
とキー
の場所にS3に暗号化されたファイルが配置されます。ファイルはS3へのPut前後で以下のようになっていました。
Hello World!
キ{'H・・Unロユ彧エ
まとめ
以上、「tS3Connection」を利用したクライアントサイド暗号化のご紹介でした。
引き続き他の各種設定についてご紹介できればと思います。それでは!